package com.hundsun.cprs.yyt.service.classify.service.impl;

import java.util.ArrayList;
import java.util.List;

import com.hundsun.cprs.yyt.service.classify.domain.Classify;
import com.hundsun.cprs.yyt.service.classify.service.ClassifyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.hundsun.cprs.yyt.common.base.BaseService;
import com.hundsun.cprs.yyt.service.classify.dao.ClassifyDao;
import com.hundsun.cprs.yyt.service.classify.domain.Classify;
import com.hundsun.cprs.yyt.service.classify.domain.ClassifyTypeJson;
import com.hundsun.cprs.yyt.service.classify.service.ClassifyService;

@Service
public class ClassifyServiceImpl extends BaseService implements ClassifyService {

	@Autowired
	private ClassifyDao classifyDao;
	
	/**
	 * 根据code获取类目信息
	 * @param code
	 */
	public Classify selectClassifyByCode(String code){
		Classify  classify = new Classify();
		classify.setCode(code);
		return classifyDao.selectClassifyByIdOrCode(classify);
	}
	
	/**
	 * 根据id查找类目录信息
	 * @param id
	 * @return
	 */
	public Classify   selectClassifyById(Integer id){
		Classify  classify = new Classify();
		classify.setId(id);
		return classifyDao.selectClassifyByIdOrCode(classify);
	}
   /**
    * 添加菜单目录
    */
	public void createClassify(Classify classify) {
		classifyDao.createClassify(classify);
	}
	
	/**
	 *查找下一个类目的id 
	 */
	public int selectClassifyIdOfNext(){
		return classifyDao.selectClassifyIdOfNext();
	}
	/**
	 *查询一级类目下的二级目录
	 */
	public List<Classify> selectTwoClassifyByParentId(Integer ParentId,String isDeleted){
		Classify  classify = new Classify();
		classify.setIsDeleted(isDeleted);
		classify.setParentId(ParentId);
		return classifyDao.selectClassifyList(classify);
	}
	
	/**
	 *查询所有的一级类目录
	 */
	public List<Classify> selectOneClassify(String isDeleted){
		Classify  classify = new Classify();
		classify.setIsDeleted(isDeleted);
		return classifyDao.selectClassifyList(classify);
	}
	/**
	 * 启动或者禁止一级目录，同时会直接启动或者禁用二级目录
	 */
	public void updateOneClassifyAndTwoClassify(Classify  classify){
		classifyDao.updateOneClassifyAndTwoClassify(classify);
	}
	/**
	 * 更新目录信息
	 * @param classify
	 */
	public  void  updateClassify(Classify classify){
		classifyDao.updateClassify(classify);
	}
	
	/**
	 * 获取类目树
	 * @param classify
	 */
	public List<ClassifyTypeJson> getClassifyTree(){
		  List<Classify>  classifyList = classifyDao.getClassifyAllList(null);
		  
		  List<ClassifyTypeJson> jsonList = new ArrayList<ClassifyTypeJson>();
	      if ( classifyList!=null && !classifyList.isEmpty()) {
	            for (Classify classifyTree : classifyList) {
                    ClassifyTypeJson json = new ClassifyTypeJson(classifyTree);
	                jsonList.add(json);
	            }
	        }
		return jsonList;
	}
	/**
	 * 更新类目树（禁用或者是启用）
	 * @param classify
	 */
	public void deleteClassifyById(Integer id){
		classifyDao.deleteClassifyById(id);
	}

	@Override
	public Classify selectClassifyByID(Long classifyId) {
		return classifyDao.selectClassifyByID(classifyId);
	}
}
